package com.zaimokuza.cn.mapper;

import com.github.pagehelper.Page;
import com.zaimokuza.cn.entity.blog.Comment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;

/**
 * @author zaimokuza
 */
@Mapper
public interface CommentMapper {

    /**
     * 添加评论
     *
     * @param comment 评论信息
     */
    void insertCommentRecord(Comment comment);

    /**
     * 删除评论
     *
     * @param id 评论ID
     */
    void deleteBatchCommentRecord(String id);

    /**
     * 根据博客ID删除评论
     *
     * @param blogId 博客ID
     */
    void deleteBatchCommentRecordByBlogId(String blogId);

    /**
     * 查询评论集合
     *
     * @param blogId 博客ID
     * @param userId 用户ID
     * @param time   评论时间
     * @return 评论集合
     */
    ArrayList<Comment> queryCommentList(@Param("blogId") String blogId, @Param("userId") String userId, @Param("time") String time);

    /**
     * 根据父评论ID集合查询子评论集合
     *
     * @param commentIdList 父评论ID集合
     * @param userId        用户ID
     * @return 子评论集合
     */
    ArrayList<Comment> queryChildCommentList(@Param("list") ArrayList<String> commentIdList, @Param("userId") String userId);

    /**
     * 查询评论分页集合
     *
     * @param blogName 博客名称
     * @param userName 用户名称
     * @param content  评论内容
     * @return 评论分页集合
     */
    Page<Comment> queryCommentPage(@Param("blogName") String blogName, @Param("userName") String userName, @Param("content") String content);

    /**
     * 查询评论是否存在
     *
     * @param id     评论ID
     * @param userId 用户ID
     * @return 1:存在;null:不存在
     */
    Integer queryCommentIsExist(@Param("id") String id, @Param("userId") String userId);

    /* 特殊操作 */

    /**
     * 增加评论点赞数
     *
     * @param commentId 评论ID
     */
    void increaseCommentLikes(String commentId);

    /**
     * 减少评论点赞数
     *
     * @param commentId 评论ID
     */
    void reduceCommentLikes(String commentId);

}
